package com.cakin.javademo;

/**
 * @ClassName: Employee1
 * @Description: 实例变量测试
 * @Date: 2020/6/12
 * @Author: cakin
 */
public class Employee1 {
    public static void main(String args[]) {
        // 当一个对象被实例化之后，每个实例变量的值就跟着确定
        // 实例变量在对象创建的时候创建，在对象被销毁的时候销毁
        Employee1 empOne = new Employee1("cakin");
        empOne.setSalary(1000);
        empOne.printEmp();
        // 变量名访问
        System.out.println(empOne.name);
    }

    // 实例变量的值应该至少被一个方法、构造方法或者语句块引用，使得外部能够通过这些方式获取实例变量信息
    // private int age;
    // 在构造器中对name赋值
    public Employee1(String empName) {
        // 实例变量对于类中的方法、构造方法或者语句块是可见的
        // 构造方法中指定
        name = empName;
    }

    // 这个成员变量对子类可见
    // 实例变量声明在一个类中，但在方法、构造方法和语句块之外
    // 实例变量可以声明在使用前或者使用后
    // 访问修饰符可以修饰实例变量
    // 一般情况下应该把实例变量设为私有
    public String name;
    // 私有变量，仅在该类可见
    // 变量的值可以在声明时指定
    private double salary = 1000.0;

    // 设定salary的值
    public void setSalary(double empSal) {
        salary = empSal;
    }

    // 实例变量具有默认值。数值型变量的默认值是0，布尔型变量的默认值是false，引用类型变量的默认值是null
    private int d;
    private String str;
    private boolean ba;

    // 打印信息
    public void printEmp() {
        System.out.println("name  : " + name);
        System.out.println("salary :" + salary);
        System.out.println("d : " + d);
        System.out.println("str : " + str);
        System.out.println("ba : " + ba);
    }
}
